Various operating systems for computing environments use different approaches for managing input-output functionality from and to external devices. For example, in UNIX-like and Windows NT operating systems, input-output functionality is managed by the operating system through device drivers, which are operating system extensions commonly written in the C programming language. Generally, these device drivers understand and control one type of device, such as a SCSI disk, a CD-ROM device, or an adapter card. It is quite common for a manufacturer of such an external device to provide device drivers that have been optimized for its own particular device. Disadvantageously, it is often necessary to rewrite portions of a device driver to port the device driver to a different operating system so that the external device can be used in a different computing environment.
Since rewriting device driver code can be time-consuming and expensive, there is an incentive for device manufacturers to provide device drivers for the more popular operating systems first. Thus, computing systems running other operating systems may not be able to utilize new external devices that become available, or the ability to utilize new external devices in such computing systems may be delayed by the time required to rewrite the drivers for these new external devices.
One solution to this problem is the Uniform Driver Interface (UDI), which provides a platform-neutral interface between a computer's operating system and a device driver which is written in compliance with the UDI standard. This solution has the disadvantage however that it only makes newly written device drivers, which are written in compliance with the UDI standard, portable. This approach does not facilitate porting an existing device driver from its native operating system to another operating system. Therefore, there remains a need for a technique of porting existing device drivers from their native operating systems to other operating systems without having to rewrite each ported device driver.